
#line 1 "..\CmdProc.c" /0
  
#line 1 "C:\Keil\C51\BIN\..\INC\reg52.h" /0






 
 
 
 
 
 
 sfr P0    = 0x80;
 sfr P1    = 0x90;
 sfr P2    = 0xA0;
 sfr P3    = 0xB0;
 sfr PSW   = 0xD0;
 sfr ACC   = 0xE0;
 sfr B     = 0xF0;
 sfr SP    = 0x81;
 sfr DPL   = 0x82;
 sfr DPH   = 0x83;
 sfr PCON  = 0x87;
 sfr TCON  = 0x88;
 sfr TMOD  = 0x89;
 sfr TL0   = 0x8A;
 sfr TL1   = 0x8B;
 sfr TH0   = 0x8C;
 sfr TH1   = 0x8D;
 sfr IE    = 0xA8;
 sfr IP    = 0xB8;
 sfr SCON  = 0x98;
 sfr SBUF  = 0x99;
 
 
 sfr T2CON  = 0xC8;
 sfr RCAP2L = 0xCA;
 sfr RCAP2H = 0xCB;
 sfr TL2    = 0xCC;
 sfr TH2    = 0xCD;
 
 
 
 
 sbit CY    = PSW^7;
 sbit AC    = PSW^6;
 sbit F0    = PSW^5;
 sbit RS1   = PSW^4;
 sbit RS0   = PSW^3;
 sbit OV    = PSW^2;
 sbit P     = PSW^0;  
 
 
 sbit TF1   = TCON^7;
 sbit TR1   = TCON^6;
 sbit TF0   = TCON^5;
 sbit TR0   = TCON^4;
 sbit IE1   = TCON^3;
 sbit IT1   = TCON^2;
 sbit IE0   = TCON^1;
 sbit IT0   = TCON^0;
 
 
 sbit EA    = IE^7;
 sbit ET2   = IE^5;  
 sbit ES    = IE^4;
 sbit ET1   = IE^3;
 sbit EX1   = IE^2;
 sbit ET0   = IE^1;
 sbit EX0   = IE^0;
 
 
 sbit PT2   = IP^5;
 sbit PS    = IP^4;
 sbit PT1   = IP^3;
 sbit PX1   = IP^2;
 sbit PT0   = IP^1;
 sbit PX0   = IP^0;
 
 
 sbit RD    = P3^7;
 sbit WR    = P3^6;
 sbit T1    = P3^5;
 sbit T0    = P3^4;
 sbit INT1  = P3^3;
 sbit INT0  = P3^2;
 sbit TXD   = P3^1;
 sbit RXD   = P3^0;
 
 
 sbit SM0   = SCON^7;
 sbit SM1   = SCON^6;
 sbit SM2   = SCON^5;
 sbit REN   = SCON^4;
 sbit TB8   = SCON^3;
 sbit RB8   = SCON^2;
 sbit TI    = SCON^1;
 sbit RI    = SCON^0;
 
 
 sbit T2EX  = P1^1;  
 sbit T2    = P1^0;  
 
 
 sbit TF2    = T2CON^7;
 sbit EXF2   = T2CON^6;
 sbit RCLK   = T2CON^5;
 sbit TCLK   = T2CON^4;
 sbit EXEN2  = T2CON^3;
 sbit TR2    = T2CON^2;
 sbit C_T2   = T2CON^1;
 sbit CP_RL2 = T2CON^0;
 
 
#line 1 "..\CmdProc.c" /0
 
  
#line 1 "C:\Keil\C51\BIN\..\INC\stdio.h" /0






 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 typedef unsigned int size_t;
 
 
 #pragma SAVE
 #pragma REGPARMS
 extern char _getkey (void);
 extern char getchar (void);
 extern char ungetchar (char);
 extern char putchar (char);
 extern int printf   (const char *, ...);
 extern int sprintf  (char *, const char *, ...);
 extern int vprintf  (const char *, char *);
 extern int vsprintf (char *, const char *, char *);
 extern char *gets (char *, int n);
 extern int scanf (const char *, ...);
 extern int sscanf (char *, const char *, ...);
 extern int puts (const char *);
 
 #pragma RESTORE
 
 
 
#line 2 "..\CmdProc.c" /0
 
  
#line 1 "C:\Keil\C51\BIN\..\INC\stdlib.h" /0






 
 
 
 
 
 
#line 13 "C:\Keil\C51\BIN\..\INC\stdlib.h" /1
  
 
 
#line 16 "C:\Keil\C51\BIN\..\INC\stdlib.h" /0
 
 
#line 18 "C:\Keil\C51\BIN\..\INC\stdlib.h" /1
  
 
#line 20 "C:\Keil\C51\BIN\..\INC\stdlib.h" /0
 
 
 
 typedef char wchar_t;
 
 
 
 
 
 
 #pragma SAVE
 #pragma REGPARMS
 
 extern int    abs  (int   val);
 extern long  labs  (long  val);
 
 extern float atof (char *s1);
 extern long  atol (char *s1);
 extern int   atoi (char *s1);
 extern int   rand ();
 extern void  srand (int);
 
 extern float         strtod  (char *, char **);
 extern long          strtol  (char *, char **, unsigned char);
 extern unsigned long strtoul (char *, char **, unsigned char);
 
 
 
 extern void init_mempool          (void xdata *p, unsigned int size);
 extern void xdata *malloc  (unsigned int size);
 extern void free                  (void xdata *p);
 extern void xdata *realloc (void xdata *p, unsigned int size);
 extern void xdata *calloc  (unsigned int size, unsigned int len);
 
 #pragma RESTORE
 
 
#line 3 "..\CmdProc.c" /0
 
  
#line 1 "C:\Keil\C51\BIN\..\INC\ctype.h" /0






 
 
 
 
 
 #pragma SAVE
 #pragma REGPARMS
 extern bit isalpha (unsigned char);
 extern bit isalnum (unsigned char);
 extern bit iscntrl (unsigned char);
 extern bit isdigit (unsigned char);
 extern bit isgraph (unsigned char);
 extern bit isprint (unsigned char);
 extern bit ispunct (unsigned char);
 extern bit islower (unsigned char);
 extern bit isupper (unsigned char);
 extern bit isspace (unsigned char);
 extern bit isxdigit (unsigned char);
 extern unsigned char tolower (unsigned char);
 extern unsigned char toupper (unsigned char);
 extern unsigned char toint (unsigned char);
 
 
 
 
 #pragma RESTORE
 
 
#line 4 "..\CmdProc.c" /0
 
 
 
 
 
 
 extern void getline (unsigned char idata *line, unsigned char n);  
 
 
 
 
 unsigned char  BufSend[] = {0x40,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x39,0x39,0x0d};
 
 unsigned char BufASCII[2];
 
 unsigned char BufAxisData[3];
 
 void InitSerialPort(void)
 {
 SCON  = 0x50;				 
 TMOD |= 0x20;                
 TH1   = 253;                 
 
 TR1   = 1;                   
 TI    = 1;                   
 }
 







 
 









 
 unsigned char fnHexToASCII(unsigned char HexVal)
 {
 if((HexVal & 0x0f) >= 0x0a)
 {
 return(HexVal + 0x37);
 }
 else
 {
 return(HexVal + 0x30);
 }
 }
 
 void fnBCDToASCII(unsigned char BCDVal,unsigned char *buf)
 {
 unsigned char temp;
 
 temp = BCDVal & 0x0f;
 buf[1] = fnHexToASCII(temp);
 BCDVal >>= 4;
 temp = BCDVal & 0x0f;
 buf[0] = fnHexToASCII(temp);
 }
 
 void fnGetXorVal(unsigned char *buf)
 {
 unsigned char i,ResultXor;
 
 ResultXor = 0;
 
 for(i=1;i<9;i++)		 
 {
 
 ResultXor ^= buf[i]; 
 }
 
 
 fnBCDToASCII(ResultXor,&buf[9]);
 
 }
 
 
 
 void main ( void )  {                           
 
 unsigned char idata cmdbuf [20];              
 unsigned char i,j;                              
 unsigned char index;
 
 InitSerialPort();
 EA = 1;                                      
 
 
 printf("AT89C52 Start...\n");
 





















 
 while (1)  
 {                                 				 
 BufAxisData[0] = P0;
 BufAxisData[1] = P1;
 BufAxisData[2] = P2;
 
 
 getline (&cmdbuf[0], sizeof (cmdbuf));      
 
 
 
 
 
 
 
 switch (cmdbuf[i])  
 {                       
 
 case 0x40:
 {
















 
 
 fnBCDToASCII(BufAxisData[0],&BufSend[7]);
 fnGetXorVal(BufSend);
 
 for(j=0;j<12;j++)		 
 {
 putchar(BufSend[j]);
 }
 }
 break;
 
 default:                                  
 break;
 }
 }
 }
 
